//作者：汤佳程
//最后修改时间：2025.7.17
//版本：1.3


/**
 *@brief 系统错误处理宏
 *当条件(x op y)满足时打印错误信息并返回指定值
 *@param x 左操作数
 *@param op 比较运算符
 *@param y 右操作数
 *@param msg 错误描述信息
 *@param ret 错误返回值
*/
#ifndef COMM_H
#define COMM_H


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>


// 系统错误处理宏（条件满足时打印错误信息并返回）
// @param x: 左操作数
// @param op: 比较运算符
// @param y: 右操作数
// @param msg: 错误描述信息
// @param ret: 错误返回值
//系统错误处理宏
//当条件(x op y)满足时打印错误信息并返回指定值
#define SYSERR(x, op, y, msg, ret) \
	if ((x)op(y)) \
{ \
	printf("%s %s %d error: %s\n", __FILE__,__func__,__LINE__,msg);\
	return ret;\
}

/**
*@brief 清除输入缓冲区宏
*循环读取并丢弃缓冲区中的字符直到遇到换行符或EOF
*/
#define CLEAR_BUFFER() \
	do { \
		int ch; \
		while ((ch = getchar()) != '\n' && ch != EOF); \
	} while(0)

//系统配置常量
#define LOOPCOUNT 3//错误次数
#define ADMIN_NAME "admin"//管理员账号
#define ADMIN_PASS "admin"//管理员密码
#define DEV_FILE "device.dat"//设备数据文件

extern int dev_id_min;//全局设备ID最小值（自动递增）

#endif
